<html>
<body>
<?php
$HOME = "./calculator.php";

$test = '<h1>Calculator</h1>(By Shulin Jia, 4/3/2012)<br>
	<form action ='.$HOME.' method="get"><br>
	Expression: <input type="text" name="equation" /><br>
	<input type="submit" value = "Calculate"/>';

echo $test;
$eqn = $_GET["equation"];
if ($eqn)
{
	echo "<h2>Result</h2>";
	//test($eqn);
	if ( check_equation($eqn) )
	{
		eval("\$answer = @($eqn);");
		echo "$eqn = $answer<br>";
	}
	
}

function check_equation($input)
{
	if ( 	preg_match('/^[*\/]/', $input) ||
			preg_match('/[^0-9\+\-\*\/ \.]+/', $input) ||
			preg_match('/[\+\-\*\/ \.]$/', $input) || 
			preg_match('/[\+\-\*\/] *[\*\/]/', $input) ||
			preg_match('/\.\./', $input) ||
			preg_match('/\+{2}/', $input) ||
			preg_match('/\-{2}/', $input)  ||
			preg_match('/[\+\*\/\.] *[\-\+][^0-9]/', $input) ||
			preg_match('/[\+\-\*\/\.] +[\+\-\*\/\.] /', $input) ||
			preg_match('/[0-9\.] +[0-9\.]/', $input) )
	{
		echo "Invalid input expression $input.";
		return false;
	}
	if ( preg_match('#/0+[^\.0]?$#', $input, $matches) )
	{
		echo "Cannot divide by 0.";
		return false;
	}
	return true;
}

function test($input)
{
	echo "<p>";
	if (preg_match('/^[*\/]/', $input))
		echo "1";
	if (preg_match('/[^0-9\+\-\*\/ \.]+/', $input))
		echo "2";
	if (preg_match('/[\+\-\*\/ \.]$/', $input) )
		echo "3";
	if (preg_match('/[\+\-\*\/] *[\*\/]/', $input)) 
		echo "4";
	if (preg_match('/\.\./', $input) )
		echo "5";
	if (preg_match('/\+{2}/', $input) )
		echo "6";
	if (preg_match('/\-{2}/', $input) )
		echo "7";
	if (preg_match('/[\+\*\/\.] *[\-\+][^0-9]/', $input) ) 
		echo "9";
	if (preg_match('/[\+\-\*\/\.] +[\+\-\*\/\.] /', $input) )
		echo "10";
	if (preg_match('/[0-9\.] +[0-9\.]/', $input) )
		echo "11";
	echo "</p>";
}
?>
</body>
</html>